package com.girant.service.Result;
import org.springframework.stereotype.Component;
import java.util.regex.Pattern;


/**
 * 关键字验证器，负责检查搜索关键字的合法性
 */
@Component
public class KeywordValidator {

    // 修正：匹配任何不在合法集合中的字符（非法字符）
    // 注意：^放在[]内表示"非"，即匹配不在后续集合中的字符
    private static final Pattern ILLEGAL_CHAR_PATTERN = Pattern.compile("[^a-zA-Z0-9\\u4e00-\\u9fa5\\s,，。:()（）【】.*+_-]");

    // 关键字最大长度限制
    private static final int MAX_KEYWORD_LENGTH = 50;

    /**
     * 验证关键字合法性
     * @param keyword 待验证的关键字
     * @throws IllegalArgumentException 如果关键字不合法，抛出此异常
     */
    public void validate(String keyword) {
        // 检查是否为null或空字符串
        if (keyword == null || keyword.trim().isEmpty()) {
            throw new IllegalArgumentException("搜索关键字不能为空");
        }

        // 检查长度
        if (keyword.length() > MAX_KEYWORD_LENGTH) {
            throw new IllegalArgumentException("搜索关键字过长，最大长度为" + MAX_KEYWORD_LENGTH + "个字符");
        }

        // 修正：如果找到任何非法字符（匹配正则），则抛出异常
        if (ILLEGAL_CHAR_PATTERN.matcher(keyword).find()) {
            throw new IllegalArgumentException("搜索关键字包含非法字符");
        }
    }
}
